#include "../logs/kaizi.h"

void test_log(const std::string &name)
{
    INFO("%s","测试开始");
    kaizi::Logger::ptr logger = kaizi::LoggerManager::getInstance().getLogger(name);
    logger->debug("%s","测试日志");
    logger->info("%s","测试日志");
    logger->warn("%s","测试日志");
    logger->error("%s","测试日志");
    logger->fatal("%s","测试日志");
    INFO("%s","测试结束");
}
int main()
{

    
    std::unique_ptr<kaizi::LoggerBuilder> builder(new kaizi::GlobalLoggerBuilder());//创建一个日志器构造器对象，让构造器指针进行智能管理
    builder->buildLoggerLevel(kaizi::LogLevel::value::DEBUG);//构造等级
    builder->buildLoggerName("async_logger");//构造日志器名称
    builder->buildFormatter("[%c]%m%n");//格式化类型
    builder->buildLoggerType(kaizi::LoggerType::LOGGER_SYNC);//构造日志器类型---同步日志器
    //下面是两种落地器
    builder->buildSink<kaizi::FileSink>("./logfile/async.log");//文件输出
    builder->buildSink<kaizi::StdoutSink>();//标准输出
    builder->buildSink<kaizi::RollBySizeSink>("./logfile/roll-", 1024 * 1024);//滚动文件输出
    builder->build(); // 构建日志器对象
    //我们上面设置的限制日志是DEBUG级别，所以只有WARN级别的日志才会被记录到文件中，其他级别的日志只会被记录到StdoutSink中
    
    test_log("async_logger");
    
    return 0;
}
